var gulp = require('gulp');

// 引入gulp路径配置
var config = require('./frame/config');

// gulp插件
var uglify = require('gulp-uglify'); // 压缩js
var cssmin = require('gulp-minify-css');  // 压缩css
var less = require('gulp-less');  // 编译less
var minimg = require('gulp-imagemin'); // 压缩图片
var connect = require('gulp-connect');//gulp http服务器插件
var concat = require('gulp-concat'); // js合并


// 默认执行的任务
gulp.task('default', [
    'commonJs',
    'connect',
    'auto'
]);

// 启动一个connectWeb服务器
gulp.task('connect', function () {
    connect.server({
        root: '',
        livereload: true
    })
})

// 创建热加载任务
gulp.task('reload', function () {
    gulp.src('frame/*')
        .pipe(connect.reload())
    console.log('change...')
})


gulp.task('html', function () {
    gulp.src('*.html')
        .pipe(connect.reload());
});

// 压缩js
gulp.task('uglifyJs', function () {
    // 加return代表异步（返回一个stream）
    // return gulp.src([config.js.src, '!./frame/js/common/*.js'])
    return gulp.src(config.js.src)
        .pipe(uglify())
        .pipe(gulp.dest(config.js.dest))
        .pipe(connect.reload())
});

// 编译less
gulp.task('compileLess', function () {
    return gulp.src(config.less.src)
        .pipe(less())
        .pipe(gulp.dest(config.less.dest));
});

//压缩css
gulp.task('minifyCss', ['compileLess'], function () {
    return gulp.src(config.css.src)
        .pipe(cssmin())
        .pipe(gulp.dest(config.css.dest));
});

// 压缩图片
gulp.task('minImage', ['compileLess'], function () {
    return gulp.src(config.images.src)
        .pipe(minimg())
        .pipe(gulp.dest(config.images.dest));
});


// 监听
gulp.task('auto', function () {
    // 源码变更 则进行压缩以及热刷新
    gulp.watch(config.js.src, ['uglifyJs'])
    gulp.watch(config.js.src, ['commonJs', 'reload'])
    gulp.watch(config.css.src, ['minifyCss', 'reload'])
    gulp.watch(config.less.all, ['compileLess'])
    gulp.watch(config.images.src, ['minImage', 'reload']);

})

// 将public/js/common/*.js文件压缩到一个文件中
gulp.task('commonJs', function () {
    console.log('编译gulp/js => dist/js')
    gulp.src('frame/js/common/*.js')
        .pipe(concat('yh_index.js'))   // 合并到index.js
        .pipe(gulp.dest('public/js/common/'))
        .pipe(uglify())
        .pipe(gulp.dest('public/js/common/'))
})
